/********************************************************************** 
 * FILE		: MD5Encryption.java					
 *			
 * AUTHOR   : shihao	
 * 
 * DATE		: 2014-5-30
 * 									
 * REASON	: CREATE  
 *
 ***********************************************************************/

package com.common.util.encryption;

import java.security.MessageDigest;

/**********************************************************************
 * @author GA 采用MD5加密解密
 * @version 1.0
 ***********************************************************************/
public class MD5Encryption
{

    /**
     * @Title: MD5加码 生成32位md5码
     * @param inStr
     *            需要解密的内容
     * @return String 解密后的内容
     */
    public static String string2MD5( String inStr )
    {
        MessageDigest md5 = null;
        try
        {
            md5 = MessageDigest.getInstance( "MD5" );
        } catch ( Exception e )
        {
            System.out.println( e.toString() );
            e.printStackTrace();
            return "";
        }
        char[] charArray = inStr.toCharArray();
        byte[] byteArray = new byte[charArray.length];

        for ( int i = 0; i < charArray.length; i++ )
            byteArray[i] = (byte)charArray[i];
        byte[] md5Bytes = md5.digest( byteArray );
        StringBuffer hexValue = new StringBuffer();
        for ( int i = 0; i < md5Bytes.length; i++ )
        {
            int val = ((int)md5Bytes[i]) & 0xff;
            if ( val < 16 )
                hexValue.append( "0" );
            hexValue.append( Integer.toHexString( val ) );
        }
        return hexValue.toString();

    }

    /**
     * 加密解密算法 执行一次加密，两次解密!
     * 
     * @param inStr
     *            需要解密的内容
     * @return String 解密后的内容
     */
    public static String convertMD5( String inStr )
    {

        char[] a = inStr.toCharArray();
        for ( int i = 0; i < a.length; i++ )
        {
            a[i] = (char)(a[i] ^ 't');
        }
        String s = new String( a );
        return s;

    }

}
